package com.hm.manage.service.impl;

import java.util.List;
import com.hm.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.hm.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.hm.manage.domain.Xjjlsub;
import com.hm.manage.mapper.XjjlMapper;
import com.hm.manage.domain.Xjjl;
import com.hm.manage.service.IXjjlService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

/**
 * 巡检记录Service业务层处理
 * 
 * @author hm
 * @date 2025-04-07
 */
@Service
public class XjjlServiceImpl extends ServiceImpl<XjjlMapper,Xjjl> implements IXjjlService
{
    @Autowired
    private XjjlMapper xjjlMapper;

    /**
     * 查询巡检记录
     * 
     * @param id 巡检记录主键
     * @return 巡检记录
     */
    @Override
    public Xjjl selectXjjlById(Long id)
    {
        return xjjlMapper.selectXjjlById(id);
    }

    /**
     * 查询巡检记录列表
     * 
     * @param xjjl 巡检记录
     * @return 巡检记录
     */
    @Override
    public List<Xjjl> selectXjjlList(Xjjl xjjl)
    {
        return xjjlMapper.selectXjjlList(xjjl);
    }

    /**
     * 新增巡检记录
     * 
     * @param xjjl 巡检记录
     * @return 结果
     */
    @Transactional
    @Override
    public int insertXjjl(Xjjl xjjl)
    {
        xjjl.setCreateTime(DateUtils.getNowDate());
        int rows = xjjlMapper.insertXjjl(xjjl);
        insertXjjlsub(xjjl);
        return rows;
    }

    /**
     * 修改巡检记录
     * 
     * @param xjjl 巡检记录
     * @return 结果
     */
    @Transactional
    @Override
    public int updateXjjl(Xjjl xjjl)
    {
        xjjl.setUpdateTime(DateUtils.getNowDate());
        xjjlMapper.deleteXjjlsubByXjjlId(xjjl.getId());
        insertXjjlsub(xjjl);
        return xjjlMapper.updateXjjl(xjjl);
    }

    /**
     * 批量删除巡检记录
     * 
     * @param ids 需要删除的巡检记录主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteXjjlByIds(Long[] ids)
    {
        xjjlMapper.deleteXjjlsubByXjjlIds(ids);
        return xjjlMapper.deleteXjjlByIds(ids);
    }

    /**
     * 删除巡检记录信息
     * 
     * @param id 巡检记录主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteXjjlById(Long id)
    {
        xjjlMapper.deleteXjjlsubByXjjlId(id);
        return xjjlMapper.deleteXjjlById(id);
    }

    /**
     * 新增${subTable.functionName}信息
     * 
     * @param xjjl 巡检记录对象
     */
    public void insertXjjlsub(Xjjl xjjl)
    {
        List<Xjjlsub> xjjlsubList = xjjl.getXjjlsubList();
        Long id = xjjl.getId();
        if (StringUtils.isNotNull(xjjlsubList))
        {
            List<Xjjlsub> list = new ArrayList<Xjjlsub>();
            for (Xjjlsub xjjlsub : xjjlsubList)
            {
                xjjlsub.setXjjlId(id);
                list.add(xjjlsub);
            }
            if (list.size() > 0)
            {
                xjjlMapper.batchXjjlsub(list);
            }
        }
    }
}
